package Classes;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Caso2 {
	
	public static void main(String[] args) {
		String caminhoUs = "opinioes-dos-usuarios-v2.data";
		String caminhoEs = "Estabelecimentos.data";
		ManipulaArquivo x = new ManipulaArquivo(caminhoUs,caminhoEs);
		ManipulaUsuario y = new ManipulaUsuario();
		
		Caso2 c2 = new Caso2();
		System.out.println(c2.somaNotas());
		System.out.println(c2.organizaNotas());
		System.out.println(c2.somaNotas());
		System.out.println(c2.organizaNotas());
		System.out.println(c2.caso2());
	}
	
	public static List<Integer> somaNotas() {
		List<Integer> notas = new ArrayList<Integer>();		
		List<Usuario> x = new ArrayList<Usuario>();
		x.addAll(ManipulaUsuario.getListaUsuario());
		x.remove(0);
		
		
	    int somaNotas = 0;	    
		for (int i = 0; i < x.get(0).getNotas().size(); i++) { // adicionado notas na lista de notas
			for (int j = 0; j < x.size(); j++) {
				somaNotas += Integer.parseInt(x.get(j).getNotas(i).split(":")[0].replace(" ", ""));
			}
			notas.add(somaNotas);
			somaNotas = 0;
	    }
		
		return notas;
	}
	
	public static List<Integer> organizaNotas() {
		List<Integer> popularidade = new ArrayList<Integer>();
		
	    popularidade.addAll(somaNotas());
	    Collections.sort(popularidade);
	    Collections.reverse(popularidade);
		
		return popularidade;
	    
	}
	
	public static String[][] caso2() {
		String[][] tabela = new String[ManipulaEstabelecimento.getListaEstabelecimento().size()][2];
		
		int a = 0; // popularidade repetida
		
		List<Integer> notas1 = Caso2.somaNotas();
		List<Integer> notas2 = Caso2.organizaNotas();
		
	    for (int i = 0; i < notas2.size(); i++) {
	    	int cont = 0;
	    	if (a != notas2.get(i)) {
	    		tabela[i][cont] = ManipulaEstabelecimento.getListaEstabelecimento().get(notas1.indexOf(notas2.get(i))).getNome();
	    		cont++;
	    		tabela[i][cont] = Integer.toString(notas2.get(i));
	    		a = notas2.get(i);
	    	}else {
	    		tabela[i][cont] = ManipulaEstabelecimento.getListaEstabelecimento().get(notas1.subList(notas1.indexOf(notas2.get(i))+1, notas1.size()-1).indexOf(notas2.get(i))+notas1.indexOf(notas2.get(i))+1).getNome();
	    		cont++;
	    		tabela[i][cont] = Integer.toString(notas2.get(i));
	    	}
	    }
		
		return tabela;
	}

}
